home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / machack / Hacks97 / WarriorsProgress.sit / Warrior’s Progress / source code / Source / Libraries / Errors / OSError.cp < prev    next >
Text File  |  1997-06-28  |  2KB  |  135 lines

  1. // OSError.cp
  2.  
  3. #ifndef OSError_h
  4. #include "OSError.h"
  5. #endif
  6. #ifndef Assert_h
  7. #include "Assert.h"
  8. #endif
  9. #ifndef DebugMessage_h
  10. #include "DebugMessage.h"
  11. #endif
  12.  
  13. #include "ConfigureOSErrorDebugging.h"
  14.  
  15. OSError::OSError( OSError& e )
  16.   : error( e.error )
  17.   {
  18.     e.Fix();
  19.   }
  20.  
  21. OSError::~OSError()
  22.   {
  23.     if ( displayDestroyedErrors && !OK() )
  24.         AnnounceDestruction( error );
  25.   }
  26.  
  27. void OSError::operator=( OSErr e )
  28.   {
  29.     if ( OK() )
  30.         error = e;
  31.      else
  32.       {
  33.         if ( displayCancelledErrors && e != noErr )
  34.             AnnounceCancellation( e, error );
  35.         
  36.         if ( displayDuplicateErrors && e == noErr )
  37.             AnnounceDuplication( e );
  38.       }
  39.   }
  40.  
  41. void OSError::operator=( OSError& e )
  42.   {
  43.     if ( this == &e )
  44.         return;
  45.     
  46.     *this = e.error;
  47.     e.Fix();
  48.   }
  49.  
  50. void OSError::Fix( OSErr e )
  51.   {
  52.     Assert( e != noErr );
  53.     if ( error == e )
  54.         error = noErr;
  55.   }
  56.  
  57. void OSError::Throw() const
  58.   {
  59.     if ( !OK() )
  60.       {
  61.         if ( displayThrownErrors )
  62.             AnnounceThrow( error );
  63.         throw *this;
  64.       }
  65.   }
  66.  
  67. void OSError::Throw( OSErr e ) const
  68.   {
  69.     Assert( e != noErr );
  70.     if ( error == e )
  71.       {
  72.         if ( displayThrownErrors )
  73.             AnnounceThrow( error );
  74.         throw *this;
  75.       }
  76.   }
  77.  
  78. void OSError::Debug() const
  79.   {
  80.     if ( displayExplicitErrors && !OK() )
  81.         AnnounceError( error );
  82.   }
  83.  
  84. void OSError::AnnounceCancellation( OSErr lost, OSErr kept )
  85.   {
  86.     DebugMessage message;
  87.     message += "\pError ";
  88.     message += lost;
  89.     message += "\p lost in favor of ";
  90.     message += kept;
  91.     message += "\p. ;error #";
  92.     message += lost;
  93.     message += "\p;error #";
  94.     message += kept;
  95.     message.Show();
  96.   }
  97.  
  98. void OSError::AnnounceDuplication( OSErr error )
  99.   {
  100.     DebugMessage message;
  101.     message += "\pError ";
  102.     message += error;
  103.     message += "\p duplicated. ;error #";
  104.     message += error;
  105.     message.Show();
  106.   }
  107.  
  108. void OSError::AnnounceDestruction( OSErr error )
  109.   {
  110.     DebugMessage message;
  111.     message += "\pError ";
  112.     message += error;
  113.     message += "\p destroyed. ;error #";
  114.     message += error;
  115.     message.Show();
  116.   }
  117.  
  118. void OSError::AnnounceThrow( OSErr error )
  119.   {
  120.     DebugMessage message;
  121.     message += "\pError ";
  122.     message += error;
  123.     message += "\p thrown. ;error #";
  124.     message += error;
  125.     message.Show();
  126.   }
  127.  
  128. void OSError::AnnounceError( OSErr error )
  129.   {
  130.     DebugMessage message;
  131.     message += "\p;error #";
  132.     message += error;
  133.     message.Show();
  134.   }
  135.